package admin

import org.springframework.dao.DataIntegrityViolationException

class EquipeController {

      static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

      def index() {
            redirect(action: "list", params: params)
      }

      def list() {
            params.max = Math.min(params.max ? params.int('max') : 10, 100)
            [equipeInstanceList: Equipe.list(params), equipeInstanceTotal: Equipe.count()]
      }

      def create() {
            [equipeInstance: new Equipe(params)]
      }

      def save() {
            def equipeInstance = new Equipe(params)
            try{
                  equipeInstance.save(flush: true) 
                  flash.message = message(code: 'default.created.message', args: [message(code: 'equipe.label', default: 'Equipe'), equipeInstance.id])
                  redirect(action: "show", id: equipeInstance.id)
            }
            catch(Exception e){
                  println e
            }
            
      }

      def show() {
            def equipeInstance = Equipe.get(params.id)
            if (!equipeInstance) {
                  flash.message = message(code: 'default.not.found.message', args: [message(code: 'equipe.label', default: 'Equipe'), params.id])
                  redirect(action: "list")
                  return
            }

            [equipeInstance: equipeInstance]
      }

      def edit() {
            def equipeInstance = Equipe.get(params.id)
            if (!equipeInstance) {
                  flash.message = message(code: 'default.not.found.message', args: [message(code: 'equipe.label', default: 'Equipe'), params.id])
                  redirect(action: "list")
                  return
            }

            [equipeInstance: equipeInstance]
      }

      def update() {
            
            def equipeInstance = Equipe.get(params.id)
            def imagem = equipeInstance.imagem
            
            if (!equipeInstance) {
                  flash.message = message(code: 'default.not.found.message', args: [message(code: 'equipe.label', default: 'Equipe'), params.id])
                  redirect(action: "list")
                  return
            }

            if (params.version) {
                  def version = params.version.toLong()
                  if (equipeInstance.version > version) {
                        equipeInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
                              [message(code: 'equipe.label', default: 'Equipe')] as Object[],
                          "Another user has updated this Equipe while you were editing")
                        render(view: "edit", model: [equipeInstance: equipeInstance])
                        return
                  }
            }
            
            if(params.imagem.size > 0){
                  equipeInstance.properties = params
                  def im = "imagem"          
                  def f = request.getFile(im)
                  equipeInstance.imagem = f.getBytes()
            }
            else{
                  equipeInstance.nome = params.nome
                  equipeInstance.descricao = params.descricao
            }
            
            if (!equipeInstance.save(flush: true)) {
                  render(view: "edit", model: [equipeInstance: equipeInstance])
                  return
            }

            flash.message = message(code: 'default.updated.message', args: [message(code: 'equipe.label', default: 'Equipe'), equipeInstance.id])
            redirect(action: "show", id: equipeInstance.id)
      }

      def delete() {
            def equipeInstance = Equipe.get(params.id)
            if (!equipeInstance) {
                  flash.message = message(code: 'default.not.found.message', args: [message(code: 'equipe.label', default: 'Equipe'), params.id])
                  redirect(action: "list")
                  return
            }

            try {
                  equipeInstance.delete(flush: true)
                  flash.message = message(code: 'default.deleted.message', args: [message(code: 'equipe.label', default: 'Equipe'), params.id])
                  redirect(action: "list")
            }
            catch (DataIntegrityViolationException e) {
                  flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'equipe.label', default: 'Equipe'), params.id])
                  redirect(action: "show", id: params.id)
            }
      }
      
      def view = {
            def avatar = Equipe.get( params.id )
            if (avatar) {
                  response.setContentLength(avatar.imagem.size())
                  response.setHeader('filename', avatar.nome)
                  OutputStream out = response.outputStream
                  out.write(avatar.imagem)
                  out.close()
            }
            else {
                  response.sendError(404)
            }
      }
}
